package com.kecheng.util;

import java.io.StringReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.kecheng.dao.PeizhiDao;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;

import com.kecheng.pojo.Peizhi;

public class Sendmoney {

	final static String url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
	final static String url1 = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";

	private static PeizhiDao peizhiDao = (PeizhiDao) SpringUtil.getBean("peizhiDao");
	private static Peizhi peizhi = peizhiDao.find();

	public String hongbao(String jieshouzhe, double money, String ip) {
		String finalmoney = String.format("%.2f", money);
		finalmoney = finalmoney.replace(".", "");
		SimpleDateFormat df1 = new SimpleDateFormat("MMddHHmmss");
		String idd = df1.format(new Date());
		// String orderNNo = MoneyUtils.getOrderNo() ;
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("nonce_str", MoneyUtils.buildRandom());// 随机字符串
		map.put("mch_billno", idd);// 商户订单
		map.put("mch_id", peizhi.getPartner());// 商户号
		map.put("wxappid", peizhi.getAppid());// 商户appid
		map.put("nick_name", "xinyin");// 提供方名称
		map.put("send_name", "xinyin");// 用户名
		map.put("re_openid", jieshouzhe);// 用户openid
		map.put("total_amount", finalmoney);// 付款金额
		map.put("min_value", finalmoney);// 最小红包
		map.put("max_value", finalmoney);// 最大红包
		map.put("total_num", 1);// 红包发送总人数
		map.put("wishing", "xinyin");// 红包祝福语
		map.put("client_ip", ip);// ip地址
		map.put("act_name", "xinyin");// 活动名称
		map.put("remark", "xinyin");// 备注
		map.put("sign", MoneyUtils.createSign(map));// 签名
		String reqXml = MoneyUtils.createXML(map);
		String resXml = "";
		try {
			resXml = MoneyUtils.doSendMoney(url, reqXml);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("reqXml:" + reqXml);
		System.out.println("resXml:" + resXml);

		// 创建一个新的字符串
		StringReader read = new StringReader(resXml);
		// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
		InputSource source = new InputSource(read);
		// 创建一个新的SAXBuilder
		SAXBuilder sb = new SAXBuilder();
		try {
			// 通过输入源构造一个Document
			Document doc = sb.build(source);
			// 取的根元素
			Element root = doc.getRootElement();
			System.out.println("根元素名称" + root.getName());// 输出的（测试）
			// 得到根元素所有子元素的集合
			List jiedian = root.getChildren();
			// 获得XML中的命名空间（XML中未定义可不写）
			Namespace ns = root.getNamespace();
			Element et = null;
			for (int i = 0; i < jiedian.size(); i++) {
				et = (Element) jiedian.get(i);// 循环依次得到子元素
				String jieguo = et.getName();
				if (jieguo.equals("result_code")) {
					String j = et.getText();
					if (j.equals("SUCCESS")) {
						System.out.println("成功了！");
						return "yes";
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public String send(String openid, String ip, double money) {
		String finalmoney = String.format("%.2f", money);
		finalmoney = finalmoney.replace(".", "");
		// MD5Util m=new MD5Util();
		SimpleDateFormat df1 = new SimpleDateFormat("MMddHHmmss");
		String idd = df1.format(new Date());
		// String orderNNo = MoneyUtils.getOrderNo() ;
		
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("mch_appid", peizhi.getAppid());// appid
		map.put("mchid", peizhi.getPartner());// 商户号
		map.put("nonce_str", MoneyUtils.buildRandom());// 随机字符串
		map.put("partner_trade_no", idd);// 商户订单号
		map.put("openid", openid);// 用户openid
		map.put("amount", finalmoney);// 付款金额
		map.put("check_name", "NO_CHECK");
		map.put("desc", "taoyouzhuan");// 描述
		map.put("spbill_create_ip", ip);
		map.put("sign", MoneyUtils.createSign(map));// 签名

		String reqXml = MoneyUtils.createXML(map);
		String resXml = "";
		try {
			resXml = MoneyUtils.doSendMoney(url1, reqXml);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("reqXml:" + reqXml);
		System.out.println("resXml:" + resXml);

		// 创建一个新的字符串
		StringReader read = new StringReader(resXml);
		// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
		InputSource source = new InputSource(read);
		// 创建一个新的SAXBuilder
		SAXBuilder sb = new SAXBuilder();
		try {
			// 通过输入源构造一个Document
			Document doc = sb.build(source);
			// 取的根元素
			Element root = doc.getRootElement();
			System.out.println("根元素名称" + root.getName());// 输出的（测试）
			// 得到根元素所有子元素的集合
			List jiedian = root.getChildren();
			// 获得XML中的命名空间（XML中未定义可不写）
			Namespace ns = root.getNamespace();
			Element et = null;
			for (int i = 0; i < jiedian.size(); i++) {
				et = (Element) jiedian.get(i);// 循环依次得到子元素
				String jieguo = et.getName();
				if (jieguo.equals("result_code")) {
					String j = et.getText();
					if (j.equals("SUCCESS")) {
						System.out.println("成功了！");
						return "yes";
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public String jieguo(String xmlDoc) {

		
		
		
		
		
		return null;
	}

}
